<?php

require_once dirname(__FILE__).'/../lib/facturasxtiposvaloresGeneratorConfiguration.class.php';
require_once dirname(__FILE__).'/../lib/facturasxtiposvaloresGeneratorHelper.class.php';

/**
 * facturasxtiposvalores actions.
 *
 * @package    gescell
 * @subpackage facturasxtiposvalores
 * @author     Your name here
 * @version    SVN: $Id: actions.class.php 12474 2008-10-31 10:41:27Z fabien $
 */
class facturasxtiposvaloresActions extends autoFacturasxtiposvaloresActions
{
    public function executeNew(sfWebRequest $request){
       parent::executeNew($request);
       $id = $request->getParameter('id');
       $factura = facturasPeer::retrieveByPK($id);
       //Buscar detalles Facturas =>
      
       $this->form->setDefault('facturas_id',$id );
       $this->form->setDefault('valorestipo_id',1 );
       $this->form->setDefault('importe', $factura->getTotal()- $factura->getTotalPagado());
       $this->form->setDefault('fecha', time());
    }
    public function executeCreate(sfWebRequest $request)
    {
       $this->form = $this->configuration->getForm();
       $this->facturasxtiposvalores = $this->form->getObject();
       $this->processForm($request, $this->form);
       $this->setTemplate('new');
    }
    protected function processForm(sfWebRequest $request, sfForm $form)
    {
       $mensaje = null;
       $pago = $request->getParameter('facturasxtiposvalores');
       $facturas = new facturas();$facturas = facturasPeer::retrieveByPK($pago['facturas_id']);
       $total = $facturas->getTotalPagado();
       $form->bind($request->getParameter($form->getName()), $request->getFiles($form->getName()));
       if ($pago['valorestipo_id'] <> 1){
           if(!$pago['numerodocumento'])
               $mensaje = 'Debe ingresar el Numero del cheque o tarjeta;';
           if(!($pago['entidademisora']))
               $mensaje = $mensaje.'Debe ingresar la entidad emisora;';
           if(($pago['fechavencimiento']['year']==''))
               $mensaje = $mensaje.'Debe ingresar la fecha de Vencimiento';
       }
       if (!$mensaje) {
       switch ($pago['importe']){
          case 0:
              $mensaje = 'El Importe no puede ser Cero';break;
          case ($pago['importe'] < 0):
             $mensaje = 'El Importe no puede ser Negativo';break;
         //Este caso el pago es mayor al monto<->hay vuelto
         case ($pago['importe'] > ($facturas->getTotal() - $total )):
             $vuelto = $pago['importe'] - ($facturas->getTotal() - $total );
             $pago['importe'] = ($facturas->getTotal() - $total );
             $mensaje = 'Se completo el pago de la Factura: '.$facturas->getNumeroDeComprobante().', El vuelto es: ';
             if ($form->isValid()){
                  if ($pago['importe']){
                     $facturasxtiposvalores = $form->save();
                     $facturasxtiposvalores->setImporte($pago['importe']);$facturasxtiposvalores->save();
                     //$facturas->setPagado(true);
                     $facturas->save();
                  }
                  $this->getUser()->setFlash('notice', $mensaje.$vuelto);
                  $this->redirect('@facturas');
              }

             break;
         
         case ($pago['importe'] < ($facturas->getTotal() - $total )):
              if ($form->isValid()){
                  $facturasxtiposvalores = $form->save(); 
                  $this->getUser()->setFlash('notice', 'Registre Otro Pago para cancelar la Factura');
                  $this->redirect('facturasxtiposvalores/new?id='.$facturas->getId());
              }
              break;
         default:
              if ($form->isValid()){
                  $facturasxtiposvalores = $form->save();
                  //$facturas->setPagado(true);
                  $facturas->save();
                  $this->getUser()->setFlash('notice', 'Se Pago completamete la Factura: '.$facturas->getNumeroDeComprobante());
                  $this->redirect('@facturas');
              }
          break;
       }
       }
       
       $this->getUser()->setFlash('error', $mensaje);
    }
    public function executeListVolver() {
        $this->redirect('facturas/index');
    }
}
